package implementacao;

import excecoes.TentativaInvalidaException;
import static implementacao.Constantes.*;

public class Jogo {

	public void iniciarJogo() {
		FornecedorDeSenha fornecedorDeSenha = new FornecedorDeSenha();
		fornecedorDeSenha.criarSenha();
		Adivinho adivinho = new Adivinho();
		int numeroDaTentativa = 1;
		System.out.println("Bem vindo ao jogo Mastermind!\n" +
				           "O computador gerou uma senha aleatoriamente.\n"+
				           "Digite quatro cores para tentar adivinhar a senha\n\n" +
				           " 1 = Vermelho\n" +
				           " 2 = Azul\n" +
				           " 3 = Verde\n" +
				           " 4 = Amarelo\n" +
				           " 5 = Roxo\n" +
				           " 6 = Rosa\n" +
				           " 7 = Laranja\n" +
				           " 8 = Marrom\n");		
		boolean adivinhou = false;
		while (numeroDaTentativa <= MAX_TENTATIVAS && !adivinhou) {
			Tentativa t = adivinho.realizarTentativa();
			boolean tentativaInvalida = false;

			try {
				adivinho.validarTentativa(t);
			} catch (TentativaInvalidaException e) {
				System.out.println("Tentativa invalida: por favor insira novamente");
				tentativaInvalida = true;
			}

			if (!tentativaInvalida) {
				Retorno r = fornecedorDeSenha.getRetorno(t);
				System.out.println("Retorno " + numeroDaTentativa + ": " + r);
				if (r.acertouTodasCoresPosicoes()) {
					System.out.println("Parabens vc adivinhou a senha em " + numeroDaTentativa + " tentativa(s)");
					adivinhou = true;
				}
				numeroDaTentativa++;
			}
		}
		if (!adivinhou) {
			System.out.println("Que pena suas tentativas acabaram");
		}
		System.out.println("Fim de jogo");
	}

}
